#ifndef DW_GRAFFITI_SAMPLER_H
#	define DW_GRAFFITI_SAMPLER_H

#include "enums.h"

namespace dw {
	namespace graffiti {

class Sampler
{
public : //! @name Construction & Destruction
	//! @{
	Sampler();
	explicit Sampler(GLuint id);
	~Sampler();
	//! @}

public : //! @name Setup
	//! @{
	void setWrap(sampler::wrap::mode::modes s, sampler::wrap::mode::modes t, sampler::wrap::mode::modes r);
	void setMinFilter(sampler::filter::element::modes element, sampler::filter::mipmap::modes mipmap);
	void setMagFilter(sampler::filter::element::modes element);
	void setLod(dw::float32 min, dw::float32 max);
	void setCompare(sampler::compare::mode::modes mode, sampler::compare::func::funcs func);
	//! @}

public : //! @name State
	//! @{
	bool isValid() const ;
	//! @}
	
private : //! @name Copy protection
	//! @{
	Sampler(const Sampler& ref);
	//! @}

public : //! @name Data
	//! @{
	GLuint m_id;
	//! @}
};

	} // namespace graffiti
} // namespace dw

#include "sampler.inl"

#endif // !DW_GRAFFITI_SHADER_H
